<?php
/**
 * <https://y.st./>
 * Copyright © 2019 Alex Yst <mailto:copyright@y.st>
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org./licenses/>.
**/

$xhtml = array(
	'<{title}>' => 'Overeating problem',
	'takedown' => '2017-11-01',
	'<{body}>' => <<<END
<img src="/img/CC_BY-SA_4.0/y.st./weblog/2019/06/29.jpg" alt="Biking to work" class="framed-centred-image" width="800" height="480"/>
<section id="dreams">
	<h2>Dream journal</h2>
	<p>
		I dreamed I was serving a long line at work.
		I was frustrated because people kept not waiting their turn to order when I&apos;d ask them to hold on, just spout out their order anyway, then just pull past the menu board after they thought I&apos;d taken their order.
		And to top it off, one of my workmates was holding things up so I couldn&apos;t get the orders out.
	</p>
</section>
<section id="email">
	<h2>Email</h2>
	<p>
		It was a huge pain in the neck to install and get running, but I managed to get a two-factor authentication application installed on my laptop.
		Honestly, it really kills the purpose of two-factor authentication, in my case.
		To log in, I need my laptop, because that&apos;s where my long, unmemorable, random passwords are stored.
		I also now need my laptop, as that&apos;s where the two-factor authentication application is stored.
		Brilliant.
		Just brilliant.
	</p>
	<p>
		Stupidity of the situation aside, with the two-factor authentication application set up, I was able to log into my mail account from the Web, a feat I haven&apos;t been able to do in over a year.
		I&apos;ve only been able to access my mail via my email client, but been unable to make any adjustments to the account itself whatsoever.
		That&apos;s going to be helpful if and when I get back to trying to improve my spam filter.
		I had to quit when I couldn&apos;t log in any more.
		Anyway, I&apos;ve now changed my password as the representative told me I should do yesterday.
		Because now, I actually can.
		It&apos;s a total waste of time to do that though, as no one has my password.
		It&apos;s a show of compliance though, which they may or may not throw a tantrum on me if they don&apos;t get.
		So far, I haven&apos;t seen any hint that they&apos;d do that, but it doesn&apos;t hurt to play along anyway if I can at all find a way to do so.
		And I did.
	</p>
	<p>
		It&apos;s Saturday though.
		They probably won&apos;t see the changed password or get back to me until at least Monday.
	</p>
</section>
<section id="vasectomy">
	<h2>Vasectomy scar</h2>
	<p>
		My vasectomy scar didn&apos;t seem to be healing any more.
		It just sort of stopped getting better for a few months.
		Honestly, if they&apos;d&apos;ve told me there&apos;d be a scar, or even simply didn&apos;t tell me there wouldn&apos;t be one, it&apos;d be fine.
		But they specifically made a big deal about how there&apos;d be no scar.
		I still didn&apos;t care at first, but as I&apos;ve thought about their claim, I&apos;ve stupidly started caring more and more.
		Today, I notice that the scar&apos;s started getting better again.
		It&apos;s nearly gone now.
		I think I said that before, but now it&apos;s even closer to gone.
	</p>
</section>
<section id="diet">
	<h2>Dietary intake</h2>
	<p>
		For breakfast, I had 80 grams of cereal and 100 grams of soy milk.
		It&apos;s more than I&apos;ve been eating for breakfast lately, but I&apos;m hoping that with more breakfast, I won&apos;t be as hungry for pretzels later in the day.
		I put off making lunch though, and ended up snacking on 112 grams of pretzels.
	</p>
	<p>
		Later, I made potato gnocchi with breakfast sausage and cashew sauce.
		I had 620 grams for lunch and 637 grams for dinner.
		I ended up overeating again today.
		I really need to work on that.
	</p>
</section>
<section id="drudgery">
	<h2>Drudgery</h2>
	<p>
		My discussion post for the day:
	</p>
	<blockquote>
		<p>
			You mentioned that Android is open source.
			It&apos;s very important to note though that Android is only <strong>*partly*</strong> open source.
			If you&apos;re looking for the freedom and security that comes from open source projects, vanilla Android isn&apos;t what you&apos;re looking for.
			Android can be broken down into two main parts: the Android Open Source Project, which contains the open source parts of Android, and the Google Applications, which contains the proprietary parts of Android.
			It&apos;s worth noting that Google Applications is more than a set of applications that run on Android.
			It includes system binaries and $a[API]s that no Android application, in the traditional sense, would be able to add.
			These binaries have greater access to the system than any application does, and often do things without the user&apos;s knowledge or consent.
			These proprietary components aren&apos;t part of the Android Open Source Project, but they&apos;re still considered by Google to be a part of the Android system, and using the trademark they hold over the Android name, they do not allow any system to call itself Android if it does not contain those proprietary components.
			In other words, Android isn&apos;t an open source system, though many of its components are open source.
			The Android Open Source Project is not Android and shouldn&apos;t be mistaken as being Android.
			It&apos;s only a piece of Android.
		</p>
		<p>
			You also mentioned that Android has too many changes to be considered a Linux distribution, and is instead an independent operating system.
			This is a bit misleading.
			An operating system is more than just a kernel, and the Linux operating system contains $a[GNU] to provide many important system components.
			Due to licensing issues, Android doesn&apos;t have any of these $a[GNU] components.
			(Google wants to allow hardware manufacturers to hide away the source code of their brand-specific forks of Android and disallow modified versions from being run on the hardware, which disempowers users, while $a[GNU]&apos;s license requires that source code remain available and modified versions be allowed to run, empowering users.)
			It&apos;s not that the components are too heavily modified, it&apos;s that they were either developed from scratch or taken from other places.
			Android is a completely different system than Linux.
			The exception being, as you mentioned, that both Android and Linux use the versions of the same kernel.
		</p>
	</blockquote>
</section>
<section id="Minetest">
	<h2>Minetest</h2>
	<img src="/img/CC_BY-SA_3.0/minetest.net./weblog/2019/06/29.png" alt="All four compressed nodes in their new colours, with a sandstone for comparison" class="framed-centred-image" width="1024" height="600"/>
	<p>
		I reworked the local checkpoint interface a bit, so it only gives you the checkpoint-grabbing button if you haven&apos;t grabbed the checkpoint and have enough mining experience to grab it.
		If you&apos;ve already grabbed it, it instead presents you with the option to release it.
		I might not even put that option in the remote checkpoint interface.
		You might have to manually visit a checkpoint to release it.
		If you don&apos;t have enough experience to grab the checkpoint and you haven&apos;t grabbed it already, you&apos;re instead presented with a message explaining that you need to do more mining before you can grab the checkpoint.
	</p>
	<p>
		I haven&apos;t actually implemented the checkpoint-releasing option, though I did implement the check that prevents you from grabbing too many checkpoints.
		I figured now that the interface didn&apos;t provide the option, I&apos;d better get the check implemented before I forgot.
		It&apos;d be so easy to forget when the option wasn&apos;t presenting itself to me any more.
	</p>
	<p>
		I think I might change up the palette used for Zero.
		In the world I&apos;ve been taking screenshots of, I&apos;ve been actually hunting down materials and whatnot.
		However, I&apos;ve also got another test world, in which I&apos;ve been using creative mode and the <kbd>/give</kbd> command.
		The <kbd>/give</kbd> command doesn&apos;t seem to work correctly as far as getting paletted objects, so no matter what palette index you ask for, you get index zero, which in this mod is coal.
		Except that there is no palette index, not even zero, and it only gets interpreted as zero when yo uplace the node and the game is no longer able to understand the concept of there being no palette index, because there can&apos;t not be a <code>param2</code> value.
		That means the object appears white, then when you place it, it turns black and stays black, even upon digging it back up and putting it in the inventory again.
		In creative mode, the objects in the creative inventory likewise have no palette indexes, so again, you get white coal-based objects that become black coal-based objects upon placing them into the world.
	</p>
	<p>
		So anyway, I&apos;ve been considering options as to how to fix this.
		The problem isn&apos;t the <kbd>/give</kbd> command (well, I mean the <kbd>/give</kbd> command is failing, but you could also ask for an item without specifying a palette index and the proper behaviour would be not to include one, which would cause the same problematic behaviour in nodes given) and the problem isn&apos;t the creative inventory.
		The problem is that items without a palette index don&apos;t get coloured as if they weren&apos;t even paletted items, instead of a zefault value such as zero being used to colour the items.
		There are three things I could do to fix this.
	</p>
	<p>
		The first option is the coded solution VanessaE uses.
		Her white index isn&apos;t at zero like it should be, so in code, she makes it so when paletted nodes without a palette index are placed into the world, their palette index isn&apos;t zeroed out like normal, and instead are assigned the index for white.
		It looks clean to the player, aside from the fact that real white items and non-index-so-it-looks-white items can&apos;t stack together, but there&apos;s no way around that, and the behaviour is actually preferable to ensure data isn&apos;t lost.
		However, I don&apos;t like that option.
		No index is no index.
		If such items are allowed to be placed (which I could easily actually disallow in code), they should have zeroed out indexes, in my opinion.
		But that&apos;s just me.
		I&apos;m more a person of principle than of practicality.
		I consider these nodes to be glitched-up versions of the index-zero nodes more than glitched-up versions of the white nodes.
		They only appear white due to the glitch.
		So they should stabilise as zero-index nodes, not arbitrary-index-but-they&apos;re-white nodes.
		The second option is to disallow such nodes from being placed into the world.
		If I&apos;m going to code a special behaviour for indexless nodes, this is what I&apos;d rather do than have the nodes convert themselves into valid nodes.
		Indexless items shouldn&apos;t be available to players, and only are if they basically cheat.
		Therefore, it makes sense not to allow such items to be considered valid.
		It seems like a bad idea to write code for such a corner case though.
		I mean, I could copy VanessaE&apos;s code and only change one number, so it&apos;s not about the effort.
		I just don&apos;t want that sort of behaviour in my mod.
		The third option is to rearrange the palette.
		In most cases, I&apos;d say that this is the only correct option.
		White should be index zero.
		It&apos;s what the engine basically does, in practice.
		(Though the object will appear white even if no white indexes are defined because it&apos;s technically the case that no palette colour is used.)
		If I made string be index zero, all paletteless nodes would become string-based nodes instead of coal-based nodes, and would retain their white colour seamlessly.
		I don&apos;t want to arbitrarily shift my palette around though.
		It&apos;s in a very specific order based on Minetest history.
		Changing it would be confusing, but even worse, changing it for this reason locks whatever element I put at index zero as the white element forever.
		It&apos;s unlikely I&apos;d change the colour of string away from white, but I&apos;d feel trapped if I did that.
		What if I wanted to make cotton the white element?
		Or what about iron, as it&apos;s steel form used to be pretty white?
		Coal should be index zero.
		And that brings me to my final option, which I just thought of today: make coal oddly white.
		If coal should be index zero, white should be index zero, and there can only be one index zero, it stands to reason that coal should be the white element.
	</p>
	<p>
		I think I rather like this final option.
		It&apos;s an unexpected twist that the second-darkest element would produce such ghastly white nodes, but I think the white-flame checkpoints look pretty cool.
		Much better than the black-flame ones, anyway.
		I couldn&apos;t resist seeing how the white coal-based nodes would look, so I got the palette rebuilt, even though I should have gotten back to my coursework.
		This time, in addition to assigning coal the white colour, I assigned the remaining three elements their colours based on their 0.4.0 appearances instead of their 0.4.16 appearances, so I ended up with slightly different colours.
		I like the new colours better though.
		They&apos;re more fitting.
		After seeing the white coal items, I realised that the compressed coal would look nice with Minetest Game&apos;s coal blocks.
		A chequered floor made of the two, for example, would make for some great contrast.
		This will increase the chances that my coal-based fortress won&apos;t be just an ugly mess.
		I still need to find a way to incorporate some non-coal into the design though, as there just aren&apos;t enough coal-based nodes to build a nice fortress out of, or build <strong>*anything*</strong> out of, for that matter.
	</p>
	<p>
		My job is pretty mindless, so I think about other things as I work.
		I can&apos;t study because I have to actually do stuff with my hands instead of scrolling through the textbook on my laptop, not to mention that I&apos;ve got to actually look at what I&apos;m doing, and not the textbook.
		So I tend to think about whatever side project I&apos;ve got going, which for the time being, is Zero.
		There&apos;s nothing more to plan, when it comes to Zero 0.0.0.
		I know how all of it&apos;s supposed to behave at this point, I just have to spend time programming said behavior based on the plan.
		So I started thinking about what I could do in the next release.
		There&apos;ll be a mese-themed node, so I started trying to figure out what that&apos;d do.
		I came up with node ideas, but I couldn&apos;t staple any of them to the mese theme, as I&apos;m not sure off hand what was available when mese became an element.
		I somehow started thinking about cotton seed though, and how it&apos;ll be in the release just before the release containing cotton itself.
		With that, I realised that cotton-seed-themed nodes can&apos;t use any part of the cotton plant in their recipes.
		How odd.
		The cotton element was added as a replacement for the string element, and strings were entirely removed from the game.
		Strings are back, though not as an element, but that doesn&apos;t change the fact that several versions of the game have the cotton seed element but no cotton to work with.
		Meanwhile, other versions have the cotton seed element but no cotton.
		And of course, the seeds themselves are exempt from use in recipes due to being a producer of more element drops.
		Universal recipes will require that no part of the cotton plant be used.
	</p>
	<p>
		Thinking about what to do with mese was pointless, as I mentioned, so I turned my attention to the name of the mod.
		Something better than &quot;Zero&quot; would be nice, but I still wanted it to be abbreviated as &quot;Zero&quot; so the computer-seen name could be <code>0</code>.
		I came up with a couple ideas, and I think I really like the first one.
		First, I came up with &quot;Building Up From Zero&quot;.
		The name has a nice flow to it, and also describes its signature levelling mechanic.
		The nodes you can craft from it don&apos;t do anything at first.
		They get better and better as you build up your mining and farming experience though.
		And of course, it has &quot;Zero&quot; in the name, explaining why the might be known to the engine as <code>0</code>.
		Next, I came up with &quot;Starting At Square Zero&quot;.
		Obviously based on the expression, this name feels more to me like it has a negative context.
		I mean, the expression is that you are <strong>*back*</strong> at square zero.
		You thought you made progress, but you&apos;re back where you started.
		That&apos;s not how my mod works.
	</p>
</section>
<section id="flies">
	<h2>Fruit flies</h2>
	<p>
		I haven&apos;t seen a single fruit fly today.
		I think I might have gotten all the adults.
		If so, that was a lot easier than I expected.
		Now I just have to wait for whatever eggs they&apos;ve no doubt laid to hatch and expose themselves, then take out the new flies as well.
	</p>
</section>
END
);
